package controleur;

import modele.ToutesLesUnitesBloqueesException;
import vue.Vue;
import vue.graphique.Fenetre;

public class Controleur implements Runnable {
	// Variable(s) statique(s)
	private static Controleur instance = null;
	
	// Variable(s) d'instance
	private Vue vue;
	private ControleurPlateau plateau;
	
	// Constructeur(s)
	private Controleur() {
		this.plateau = new ControleurPlateau();
		
		this.plateau.assignerPlateau("fichiers/map/map2.txt");
		this.plateau.assignerUnites("fichiers/unites/unites2.txt");
		
		this.vue = new Fenetre();
		this.vue.afficher(this.plateau.toString());
	}
	
	// Accesseur(s)
	public Vue getVue() {
		return this.vue;
	}
	
	// Methode(s)
	public void deplacer() {
		try {
			this.plateau.melangeTrajectoires();
		} catch (ToutesLesUnitesBloqueesException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Override
	public void run() {
		this.deplacer();
	}
	
	// Methode(s) statique(s)
	public static Controleur getInstance() {
		if(Controleur.instance == null) {
			Controleur.instance = new Controleur();
		}
		return Controleur.instance;
	}
	
	public static void createInstance() {
		Controleur.instance = new Controleur();
	}
}
